package ccm.itesm.mx.servicios;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class CalificacionesParcial2 extends Activity {

	static String servicio = "http://escolares.ccm.itesm.mx/~mobile/boleta/boleta.php?trm=201113&mat=";
	static String materias = "http://escolares.ccm.itesm.mx/~mobile/boleta/grupos.php?trm=201113&crs=";

	
	private ArrayList<String> nombreEmpresas;
	private ArrayList<String> nombreMaterias;
	private ArrayList<String> nombreProfesores;
	private ArrayList<String> claveMaterias;

	/* (non-Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.parcial1);

		RelativeLayout ln = (RelativeLayout)this.findViewById(R.id.relativeLayout1);
        //ln.setBackgroundColor(this.getResources().getColor(R.color.azul));
	
		Bundle bundle = this.getIntent().getExtras();
		String mat = bundle.getString("matricula");
		System.out.println("LA MATRICULA GANADORA ES----------->" + mat);
        nombreEmpresas = new ArrayList<String>();
        nombreMaterias =  new ArrayList<String>();
        nombreProfesores  = new ArrayList<String>();
        claveMaterias = new ArrayList<String>();
		Bundle b = this.getIntent().getExtras();

		TextView titulo =new TextView(this);
		titulo = (TextView)findViewById(R.id.titulo);
		titulo.setText("PARCIAL II");

		
		TextView cal1 =new TextView(this);
		TextView cal2 =new TextView(this);
		TextView cal3 =new TextView(this);
		TextView cal4 =new TextView(this);
		TextView cal5 =new TextView(this);
		TextView cal6 =new TextView(this);
		
		cal1 = (TextView)findViewById(R.id.cal1);
		cal2 = (TextView)findViewById(R.id.cal2);
		cal3 = (TextView)findViewById(R.id.cal3);
		cal4 = (TextView)findViewById(R.id.cal4);
		cal5 = (TextView)findViewById(R.id.cal5);
		cal6 = (TextView)findViewById(R.id.cal6);
		

		TextView materia1 =new TextView(this);
		TextView materia2 =new TextView(this);
		TextView materia3 =new TextView(this);
		TextView materia4 =new TextView(this);
		TextView materia5 =new TextView(this);
		TextView materia6 =new TextView(this);
		
		materia1 = (TextView)findViewById(R.id.materia1);
		materia2 = (TextView)findViewById(R.id.materia2);
		materia3 = (TextView)findViewById(R.id.materia3);
		materia4 = (TextView)findViewById(R.id.materia4);
		materia5 = (TextView)findViewById(R.id.materia5);
		materia6 = (TextView)findViewById(R.id.materia6);

		TextView profesor1 =new TextView(this);
		TextView profesor2 =new TextView(this);
		TextView profesor3 =new TextView(this);
		TextView profesor4 =new TextView(this);
		TextView profesor5 =new TextView(this);
		TextView profesor6 =new TextView(this);
		
		profesor1 = (TextView)findViewById(R.id.maestro1);
		profesor2 = (TextView)findViewById(R.id.maestro2);
		profesor3 = (TextView)findViewById(R.id.maestro3);
		//profesor4 = (TextView)findViewById(R.id.maestro4);
		profesor5 = (TextView)findViewById(R.id.maestro5);
		profesor6 = (TextView)findViewById(R.id.maestro6);

		//cargaEmpresa(b.getString("empresa"));
		cargaEmpresa(mat);
		
		
		//System.out.println("TAAAAAAAAAAA------>" + nombreEmpresas.size());
		
		for(int i = 0;i<claveMaterias.size();i++){
			cargaMaterias(claveMaterias.get(i));
		}
		
		System.out.println("Profesores ------> " + nombreProfesores.size());
		System.out.println("Materias ------> " + nombreMaterias.size());
		cal1.setText(nombreEmpresas.get(0));
		cal2.setText(nombreEmpresas.get(1));
		cal3.setText(nombreEmpresas.get(2));
		cal4.setText(nombreEmpresas.get(3));
		cal5.setText(nombreEmpresas.get(4));
		cal6.setText(nombreEmpresas.get(5));
		
		
		materia1.setText(nombreMaterias.get(0));
		materia2.setText(nombreMaterias.get(1));
		materia3.setText(nombreMaterias.get(2));
		materia4.setText(nombreMaterias.get(3));
		materia5.setText(nombreMaterias.get(4));
		materia6.setText(nombreMaterias.get(5));
		
		
		System.out.println("Pro0o0o0o0fesor  "+nombreProfesores.get(0));
		profesor1.setText(nombreProfesores.get(0));
		profesor2.setText(nombreProfesores.get(1));
		profesor3.setText(nombreProfesores.get(2));
		//profesor4.setText(nombreProfesores.get(3));
		profesor5.setText(nombreProfesores.get(4));
		profesor6.setText(nombreProfesores.get(5));
		
		
		//this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, nombreEmpresas));
		
	}

		
		private String download(String urlString){
	        
			InputStream in = null;
	        byte[] data = null;
	        URLConnection conn = null;
	        try{
	        	URL url = new URL(urlString);
		    	conn = url.openConnection();
		        
		        if ((conn instanceof HttpURLConnection)){
		    		HttpURLConnection httpConn = (HttpURLConnection) conn;
		    		httpConn.setAllowUserInteraction(false);
		    		httpConn.setInstanceFollowRedirects(true);
		    		httpConn.setRequestMethod("GET");
		    		httpConn.connect();
		
		    		if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK){
		    			in = httpConn.getInputStream();
		    			ByteArrayOutputStream baos = new ByteArrayOutputStream();
		    			int c;
		    			while((c = in.read()) > -1)
		                    baos.write(c);
		                data = baos.toByteArray();
		                baos.close();
		                in.close();
		                String str = new String(data);
		                System.out.println(str);
		                return str;
		    		}
		    		else{                
		    			return("Error reading data");
		            }
		        }
	    	}
	    	catch (Exception ex){
	    		return "Error in connection";
	    	}
	    	finally{
	            try{
	                if (conn != null){
	                    conn = null;
	                }
	                if (in != null){
	                    in.close();
	                    in = null;
	                }

	            }
	            catch(IOException ex){
	            	return("Error: "+ex.getMessage());
	            }
	        }   
	    	return null;
	    }

		private void cargaEmpresa(String matricula){
			//String consulta =  servicio + empresa.trim();
			//String consulta =  servicio + "A00542862";
			String consulta = servicio +matricula.trim();
			String respuesta = download(consulta);
			
			if((respuesta != null) && !respuesta.startsWith("Error")){
				//respuesta = respuesta.substring(respuesta.indexOf('{'), respuesta.length()-1);
				System.out.println("ENTRE A RESPUESTA");
				try {
					System.out.println("JSON --->"+ respuesta);
					//JSONObject principal = new JSONObject(respuesta);
					JSONArray calificaciones = new JSONArray(respuesta);
					System.out.println("TAMAAAAAA " + calificaciones.length());
					for (int i=0;i< calificaciones.length();i++){
						JSONObject calificacion = calificaciones.getJSONObject(i);
						//System.out.println("UNA CALIFACION -->"+calificacion.getInt("grde_p1"));
						this.nombreEmpresas.add(calificacion.getString("grde_p2"));
						this.claveMaterias.add(calificacion.getString("crn"));
					}
					//System.out.println("CAL----------> "+ principal.get("grde_p1"));
					//JSONObject resultSet = principal.getJSONObject("ResultSet");
					//JSONArray empresas = resultSet.getJSONArray("Result");
					/*JSONArray calificaciones = principal.getJSONArray("");
					if(calificaciones.length()>0){
						//for (int i = 0; i < calificaciones.length(); i++) {
							//JSONObject empresaConsultada = calificaciones.getJSONObject(i);
							//this.nombreEmpresas.add(empresaConsultada.getString("grde_p1"));
						//}
					}
					else{
						Toast.makeText(getBaseContext(), "No hay datos", Toast.LENGTH_LONG).show();
					}*/
				}
				catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			else if(respuesta.equalsIgnoreCase("Error in connection")){
				Toast.makeText(getBaseContext(), "Error 8741 en 0xFA123123 ", Toast.LENGTH_LONG).show();

			}
		}
	
		private void cargaMaterias(String claveMateria){
			String consulta =  materias + claveMateria;
			String respuesta = download(consulta);
			String profesor = "";
			if((respuesta != null) && !respuesta.startsWith("Error")){
				respuesta = respuesta.substring(respuesta.indexOf('{'), respuesta.length()-1);
				System.out.println("ENTRE A RESPUESTA");
				try {
					//JSONArray calificaciones = new JSONArray(respuesta);
					JSONObject infoMaterias = new JSONObject(respuesta);
					this.nombreMaterias.add(infoMaterias.getString("nommat"));
					profesor = infoMaterias.getString("nombre") + infoMaterias.getString("paterno");
					this.nombreProfesores.add(profesor);
					//for (int i=0;i< calificaciones.length();i++){
						//JSONObject calificacion = calificaciones.getJSONObject(i);
						//this.nombreEmpresas.add(calificacion.getString("grde_p1"));
						
					//}
				}
				catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			else if(respuesta.equalsIgnoreCase("Error in connection")){
				Toast.makeText(getBaseContext(), "Error 8741 en 0xFA123123 ", Toast.LENGTH_LONG).show();

			}
		}
		
		

}
